xlv.obj.tableObjects={
	extend:function(){
	},
	implement:function(){
	},
	create:function(tag){
		var div=document.createElement((tag||'div'));
		div.setAttribute('xlvobject','xlv.obj.tableObjects');
		return div;			
	},
	properties:{
		rows:1,
		columns:1
	},
	method:{
		construct:function(){
			Element.addClassName(this,'class_tableObjects');
			var v=this.$V,p=this.$P;
			v.pattern=xlv.util.findDirectChild(this, {xlvobject:'*'},null);
			if(v.pattern){
				v.pattern.parentNode.removeChild(v.pattern);
				var objs=xlv.util.descendants(v.pattern,{xlvobject:'*'},null);
				for(var i=0;i<objs.length;++i){
					objs[i]._$extended=false;
					objs[i]._$constructed=false;
					objs[i]._$exts=null;
					objs[i]._$imps=null;
					objs[i]._$initialized=false;
				}
			}
			v.table=document.createElement('table');
			v.table.setAttribute('id','xlvid_tableObjects_table');
			v.table.setAttribute('cellpadding','0px');
			v.table.setAttribute('cellspacing','0px');
			v.table.appendChild(v.tbody=document.createElement('tbody'));
			v.tbody.setAttribute('id','xlvid_tableObjects_body');
			this.appendChild(v.table);
			this.styleForId(v.table,v.table.id);
			this.styleForId(v.tbody,v.tbody.id);
			v.objects=[];
			var no=0;
			for(var i=0;i<p.rows;++i){
				var row=v.tbody.insertRow(-1);
				row.setAttribute('id','xlvid_tableObjects_row');
				var cols=[];
				for(var j=0;j<p.columns;++j){
					no+=1;
					var col=row.insertCell(-1);
					var object;
					if(v.pattern)col.appendChild(object=v.pattern.cloneNode(true));
					if(Prototype.Browser.IE) xlv.sys._patchIEProperties(object);
					else{
						if(!object._$extended)xlv.sys.extend(object);
					}
					col.setAttribute('id','xlvid_tableObjects_col');
					object.$P._row=(i+1);
					object.$P._column=(j+1);
					object.$P._no=no;
					object.$P._tableObject=this;
					this.styleForId(col,col.id);
					cols.push(object);
				}
				this.styleForId(row,row.id);
				v.objects.push(cols);
			}
		},
		initial:function(){
		},
		styleForId:function(tag,id){
		},
		getTableObject:function(row,col){
			var row=(this.$V.objects[row-1]);
			return (row)? row[col-1]:null;
		},
		getObjectArray:function(){
			var v=this.$V;
			var array=[];
			for(var i=0;i<v.objects.length;++i)
				for(var j=0;j<v.objects[i].length;++j)
					array.push(v.objects[i][j]);
			return array;
		}
	}
};
